package JavaShengSai2;

/**
 * 4. 子串分值
 * https://www.lanqiao.cn/problems/499/learning/?page=2&first_category_id=1&tags=2020,%E7%9C%81%E8%B5%9B&tag_relation=intersection&sort=pass_rate&asc=0
 */

import java.util.Scanner;

/**
 现在以每一个 字符 为单位进行扩大到 字符串，当某个字符在子串中为 1个的时候呢，不论这个子串是怎样的保底都为1
 那么现在以某个字符为起点，向左向右进行遍历，当第一次出现这个重复字符的时候截止移动，这时候这个字符串的所有子串就保底为1但是需要包含这个字符串
 这时候只需要计算这个所有的子字符串的个数即可
 比如：bcabcdb
 这个时候假如以 中间那个 b 为起点进行左右遍历，让其存在价值，为1的话，那么进行左右遍历区间不能存在相同的值
 那个往左为 ca   往右为 cd
 那个这个所有的子字符串：以c为起点 cab  cabc cabcd  3个
 以a为起点 ab   abc  abcd   3个
 以b为起点  b    bc   bcd   3个
 由此可以看出以b 为价值，这个字符串的总值为 9，这样就不用查看字符串中是否存在相同的值，只需要保证 开始的字符是不重复的即可
 那么如何算出这个值
 就是以开始的字符为基准 （左面遍历的长度 + 本身） * （右面遍历的长度 + 本身） 因为要保证开始的字符串是必须存在的
 */
public class Main4 {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        //在此输入您的代码...
        String str = scan.next();
        int ret = 0;
        // 以字符串中的每一个字符为起点进行遍历
        for(int i = 0;i < str.length();i++) {
            int leftL = 0;
            int rightL = 0;
            char ch = str.charAt(i);
            // 往左遍历
            for(int j = i - 1;j >= 0 && str.charAt(j) != ch;j--) {
                leftL++;
            }
            // 往右
            for(int j = i + 1;j < str.length() && str.charAt(j) != ch;j++) {
                rightL++;
            }
            // 计算以 i 位置的字符为起点的总价值
            ret += (leftL + 1) * (rightL + 1);
        }
        System.out.println(ret);
        scan.close();
    }

     static int count = 0;
     public static void main2(String[] args) {
         Scanner scan = new Scanner(System.in);
         //在此输入您的代码...
         // 暴力枚举，遍历所有的子字符串，统计对应子字符串的单个出现的字符的个数
         String str = scan.next();
         for(int i = 0;i < str.length();i++) {
           for(int j = i;j < str.length();j++) {
             String s = str.substring(i,j + 1); // 左闭右开的，所以需要加1
             f(s);
           }
         }
         System.out.println(count);
         scan.close();
     }
     public static void f(String s) {
       int[] hash = new int[26];
       // 遍历s，看多少个字符
       for(int i = 0;i < s.length();i++) {
         hash[s.charAt(i) - 'a']++;
       }

       // 遍历hash查看为1的个数
       for(int i = 0;i < hash.length;i++) {
         if(hash[i] == 1) {
           count++;
         }
       }
     }

}
